package org.example.order.config;

import feign.Logger;
import feign.Request;
import feign.RequestInterceptor;
import feign.auth.BasicAuthRequestInterceptor;
import org.example.order.feign.interceptor.CustomFeignInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author tds
 * @version 1.0.0
 * @Company
 * @ClassName FeignConfig
 * @Description
 *  feign的配置。这里是通过配置类的方式，还有一种是配置文件的方式
 *  如果加了@Configuration那么就是全局配置，如果没有加，可以在feign接口中指定该配置作为局部配置（仅对该feign接口有效）
 * @Date 2023-04-17 21:05
 */
//@Configuration
public class FeignConfig {

    /**
     * feign日志级别配置
     * @return
     */
    @Bean
    private Logger.Level feignLoggerLevel() {
        // BASIC级别，打印请求方法，响应状态码和执行时间
        return Logger.Level.BASIC;
    }

    /**
     * feign超时时间配置
     * @return
     */
    @Bean
    private Request.Options options() {
        return new Request.Options(3 * 1000, 4 * 1000);
    }

    /**
     * 自定义feign拦截器
     * @return
     */
    @Bean
    private RequestInterceptor feignInterceptor() {
        return new CustomFeignInterceptor();
    }
}
